package client.structural.composite;

import org.junit.Test;
import uml.structural.composite.*;

/**
 * 组合模式--客户端<br>
 * 客户端针对抽象构件编程<br>
 * on 2022/12/25 1:03
 */
public class Client {
    @Test
    public void t(){
        //树形文件结构图示：
        /**
        我的文件  |--我的音频   |--mercy.mp3
                 |           |--talking to the moon.mp3
                 |
                 |--我的视频  |--三国演义.mp4
                 |           |--天使恶魔.mp4
                 |
                 |--我的简历  |--我的简历.pdf
                 |           |--我的简历.word
                 |
                 |--我的图片  |--大学英语四级.png
                             |--学位证书.png
          **/

        AbstractFile folder,folder1,folder2,folder3,folder4,
                file1,file2,file3,file4,file5,file6,file7,file8;
        //文件夹
        folder=new Folder("我的文件");
        folder1=new Folder("我的视频");
        folder2=new Folder("我的音频");
        folder3=new Folder("我的图片");
        folder4=new Folder("我的简历");
        //文件
        file1=new VideoFile("三国演义.mp4");
        file2=new VideoFile("天国与恶魔.mp4");
        file3=new AudioFile("mercy.mp3");
        file4=new AudioFile("talking to th moon.mp3");
        file5=new ImageFile("大学英语等级考试.png");
        file6=new ImageFile("学位证书.png");
        file7=new TextFile("我的简历.pdf");
        file8=new TextFile("我的简历.word");

        folder1.addChild(file1);
        folder1.addChild(file2);
        folder2.addChild(file3);
        folder2.addChild(file4);
        folder3.addChild(file5);
        folder3.addChild(file6);
        folder4.addChild(file7);
        folder4.addChild(file8);

        folder.addChild(folder1);
        folder.addChild(folder2);
        folder.addChild(folder3);
        folder.addChild(folder4);
        // 递归杀毒
        folder.killVirus();
    }
}
